package com.gdkj.tencent;

import com.gdkj.common.LogicResult;
import com.tencentcloudapi.ame.v20190916.models.*;

/**
 * 音乐机器人
 */
public interface IImMusicRobot {
    /**
     * 创建直播互动机器人
     * 文档地址：https://cloud.tencent.com/document/api/1155/68351
     * @param liveUid 房主uid
     * @param userId 用户uid
     * @param syncRobotCommands 机器人自定义指令
     * @return CreateKTVRobotResponse
     */
    CreateKTVRobotResponse createRobot(String liveUid, String userId, SyncRobotCommand[] syncRobotCommands);

    /**
     * 机器人添加歌曲
     * @param robotId 机器人id
     * @param musicIds 音乐id集合
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse addMusic(String robotId, String[] musicIds);

    /**
     * 机器人播放音乐
     * @param robotId 机器人id
     * @param index 播放位置 (起始位为0)
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse playMusic(String robotId, Integer index);

    /**
     * 机器人暂停音乐
     * @param robotId 机器人id
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse stopMusic(String robotId);

    /**
     * 机器人播放下一首
     * @param robotId 机器人id
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse nextMusic(String robotId);


    /**
     * 机器人删除歌曲
     * @param robotId 机器人id
     * @param index 播放位置 (起始位为0)
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse deleteMusic(String robotId, Integer index);

    /**
     * 机器人清空歌曲列表
     * @param robotId 机器人id
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse clearMusic(String robotId);

    /**
     * 机器人移动歌曲
     * @param robotId 机器人id
     * @param index 待调整歌曲的位置 (起始位为0)
     * @param changedIndex 表示移动歌曲的目标位置
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse moveMusic(String robotId, Integer index, Integer changedIndex);

    /**
     * 机器人设置播放模式
     * @param robotId 机器人id
     * @param playMode 播放模式 RepeatPlaylist：列表循环；Order：顺序播放；RepeatSingle：单曲循环；Shuffle：随机播放
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse setPlayMode(String robotId, String playMode);

    /**
     * 机器人设置音量
     * @param robotId 机器人id
     * @param volume 音量 0~100，默认值为 50
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse setVolume(String robotId, Integer volume);

    /**
     * 机器人音频参数信息
     * @param robotId 机器人id
     * @param definition 规格 audio/mi：低规格；audio/lo：中规格；audio/hi：高规格
     * @param type 音频类型 Original：原唱；Accompaniment：伴奏
     * @return SyncKTVRobotCommandResponse
     */
    SyncKTVRobotCommandResponse setAudioParam(String robotId, String definition, String type);

    /**
     * 获取机器人信息，以及播放列表
     * @param robotIds 机器人集合
     * @param statuses 状态 Play：播放； Pause：暂停；Destroy：销毁
     * @return DescribeKTVRobotsResponse
     */
    DescribeKTVRobotsResponse getRobotPlayList(String[] robotIds, String[] statuses);

    /**
     * 销毁机器人
     * @param robotId 机器人id
     * @return DestroyKTVRobotResponse
     */
    DestroyKTVRobotResponse destroyRobot(String robotId);
}
